package org.example.campusforum.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;
import org.example.campusforum.entity.User;

/**
 * 用户数据访问层接口
 *
 * 提供用户相关的数据库操作，包括用户的增删改查、密码管理等功能。
 * 继承MyBatis Plus的BaseMapper接口，提供基础的CRUD操作。
 * 额外提供密码相关的自定义操作方法。
 *
 * @author CampusForum Team
 * @version 1.0
 * @since 2024
 */
@Mapper
public interface UserMapper extends BaseMapper<User> {

    /**
     * 根据邮箱更新用户密码
     *
     * 更新指定邮箱用户的密码，只更新未删除的用户。
     * 用于密码修改和密码重置功能。
     *
     * @param email 用户邮箱
     * @param newPassword 新密码
     * @return 影响的行数，1表示更新成功，0表示用户不存在或已删除
     */
    @Update("UPDATE user SET password = #{newPassword} WHERE email = #{email} AND is_deleted = 0")
    int updatePassword(@Param("email") String email, @Param("newPassword") String newPassword);

    /**
     * 根据邮箱获取用户密码
     *
     * 查询指定邮箱用户的密码，用于验证原密码。
     * 只查询未删除的用户。
     *
     * @param email 用户邮箱
     * @return 用户密码，如果用户不存在或已删除则返回null
     */
    @Select("SELECT password FROM user WHERE email = #{email} AND is_deleted = 0")
    String getPasswordByEmail(@Param("email") String email);

}